package com.es.linklist;

/**
 * 链表的基类
 *
 * @author 二十
 */
public abstract class AbstractLinkedList<E> {
    /**
     * 头插
     */
    public abstract void addFirst(E e);
    /**
     * 指定位置插入
     */
    public abstract void addIndex(int index, E e);
    /**
     * 尾插
     */
    public abstract void addTail(E e);
    /**
     * 获取指定位置元素
     */
    public abstract E get(int index);
    /**
     *  或取头节点
     */
    public abstract E getFirst();
    /**
     * 获取尾结点
     */
    public abstract E getTail();
    /**
     * 是否包含给定元素
     */
    public abstract boolean contains(E e);
    /**
     * 修改指定位置的元素
     */
    public abstract void set(int index, E e);
    /**
     * 删除指定位置的节点
     */
    public abstract void deleteNode(int index);
    /**
     * 删除头节点
     */
    public abstract void deleteFirst();
    /**
     * 删除尾节点
     */
    public abstract void deleteLast();

    /**
     * 删除指定值的元素
     *
     */
    public abstract void deleteElement(E e);
    /**
     * 获取链表中元素个数
     */
    public abstract int getSize();
}
